package cc.linker.steplink.crm.commons.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: CKQ
 * @DateTime: 2020/9/3 15:43
 * @Description: TODO
 */
public class WxErrorMappingUtil {

    private static final Map<String, String> errorList;

    static {
        errorList = new HashMap<String, String>();
        errorList.put("-1", "系统繁忙，此时请开发者稍候再试");
        errorList.put("0", "请求成功");
        errorList.put("40001", "获取 access_token 时 AppSecret 错误，或者 access_token 无效。请开发者认真比对 AppSecret 的正确性，或查看是否正在为恰当的公众号调用接口");
        errorList.put("40002", "不合法的凭证类型");
        errorList.put("40003", "不合法的 OpenID ，请开发者确认 OpenID （该用户）是否已关注公众号，或是否是其他公众号的 OpenID");
        errorList.put("40004", "不合法的媒体文件类型");
        errorList.put("40005", "不合法的文件类型");
        errorList.put("40006", "不合法的文件大小");
        errorList.put("40007", "不合法的媒体文件 id");
        errorList.put("40008", "不合法的消息类型");
        errorList.put("40009", "不合法的图片文件大小");
        errorList.put("40010", "不合法的语音文件大小");
        errorList.put("40011", "不合法的视频文件大小");
        errorList.put("40012", "不合法的缩略图文件大小");
        errorList.put("40013", "不合法的 AppID ，请开发者检查 AppID 的正确性，避免异常字符，注意大小写");
        errorList.put("40014", "不合法的 access_token ，请开发者认真比对 access_token 的有效性（如是否过期），或查看是否正在为恰当的公众号调用接口");
        errorList.put("40015", "不合法的菜单类型");
        errorList.put("40016", "不合法的按钮个数");
        errorList.put("40017", "不合法的按钮类型");
        errorList.put("40018", "不合法的按钮名字长度");
        errorList.put("40019", "不合法的按钮 KEY 长度");
        errorList.put("40020", "不合法的按钮 URL 长度");
        errorList.put("40021", "不合法的菜单版本号");
        errorList.put("40022", "不合法的子菜单级数");
        errorList.put("40023", "不合法的子菜单按钮个数");
        errorList.put("40024", "不合法的子菜单按钮类型");
        errorList.put("40025", "不合法的子菜单按钮名字长度");
        errorList.put("40026", "不合法的子菜单按钮 KEY 长度");
        errorList.put("40027", "不合法的子菜单按钮 URL 长度");
        errorList.put("40028", "不合法的自定义菜单使用用户");
        errorList.put("40029", "无效的 oauth_code");
        errorList.put("40030", "不合法的 refresh_token");
        errorList.put("40031", "不合法的 openid 列表");
        errorList.put("40032", "不合法的 openid 列表长度");
        errorList.put("40033", "不合法的请求字符，不能包含 “uxxxx” 格式的字符");
        errorList.put("40035", "不合法的参数");
        errorList.put("40038", "不合法的请求格式");
        errorList.put("40039", "不合法的 URL 长度");
        errorList.put("40048", "无效的url");
        errorList.put("40050", "不合法的分组 id");
        errorList.put("40051", "分组名字不合法");
        errorList.put("40060", "删除单篇图文时，指定的 article_idx 不合法");
        errorList.put("40117", "分组名字不合法");
        errorList.put("40118", "media_id 大小不合法");
        errorList.put("40119", "button 类型错误");
        errorList.put("40120", "子 button 类型错误");
        errorList.put("40121", "不合法的 media_id 类型");
        errorList.put("40125", "无效的appsecret");
        errorList.put("40132", "微信号不合法");
        errorList.put("40137", "不支持的图片格式");
        errorList.put("40155", "请勿添加其他公众号的主页链接");
        errorList.put("40163", "oauth_code已使用");
        errorList.put("41001", "缺少 access_token 参数");
        errorList.put("41002", "缺少 appid 参数");
        errorList.put("41003", "缺少 refresh_token 参数");
        errorList.put("41004", "缺少 secret 参数");
        errorList.put("41005", "缺少多媒体文件数据");
        errorList.put("41006", "缺少 media_id 参数");
        errorList.put("41007", "缺少子菜单数据");
        errorList.put("41008", "缺少 oauth code");
        errorList.put("41009", "缺少 openid");
        errorList.put("42001", "access_token 超时，请检查 access_token 的有效期，请参考基础支持 - 获取 access_token 中，对 access_token 的详细机制说明");
        errorList.put("42002", "refresh_token 超时");
        errorList.put("42003", "oauth_code 超时");
        errorList.put("42007", "用户修改微信密码， accesstoken 和 refreshtoken 失效，需要重新授权");
        errorList.put("43001", "需要 GET 请求");
        errorList.put("43002", "需要 POST 请求");
        errorList.put("43003", "需要 HTTPS 请求");
        errorList.put("43004", "需要接收者关注");
        errorList.put("43005", "需要好友关系");
        errorList.put("43019", "需要将接收者从黑名单中移除");
        errorList.put("44001", "多媒体文件为空");
        errorList.put("44002", "POST 的数据包为空");
        errorList.put("44003", "图文消息内容为空");
        errorList.put("44004", "文本消息内容为空");
        errorList.put("45001", "多媒体文件大小超过限制");
        errorList.put("45002", "消息内容超过限制");
        errorList.put("45003", "标题字段超过限制");
        errorList.put("45004", "描述字段超过限制");
        errorList.put("45005", "链接字段超过限制");
        errorList.put("45006", "图片链接字段超过限制");
        errorList.put("45007", "语音播放时间超过限制");
        errorList.put("45008", "图文消息超过限制");
        errorList.put("45009", "接口调用超过限制");
        errorList.put("45010", "创建菜单个数超过限制");
        errorList.put("45011", "API 调用太频繁，请稍候再试");
        errorList.put("45015", "回复时间超过限制");
        errorList.put("45016", "系统分组，不允许修改");
        errorList.put("45017", "分组名字过长");
        errorList.put("45018", "分组数量超过上限");
        errorList.put("45047", "客服接口下行条数超过上限");
        errorList.put("45064", "创建菜单包含未关联的小程序");
        errorList.put("45065", "相同 clientmsgid 已存在群发记录，返回数据中带有已存在的群发任务的 msgid");
        errorList.put("45066", "相同 clientmsgid 重试速度过快，请间隔1分钟重试");
        errorList.put("45067", "clientmsgid 长度超过限制");
        errorList.put("45157", "菜单标题与公众号后台标签名称产生重复，请修改菜单标题或公众号后台标签名称。");
        errorList.put("46001", "不存在媒体数据");
        errorList.put("46002", "不存在的菜单版本");
        errorList.put("46003", "不存在的菜单数据");
        errorList.put("46004", "不存在的用户");
        errorList.put("47001", "解析 JSON/XML 内容错误");
        errorList.put("48001", "api 功能未授权，请确认公众号已获得该接口，可以在公众平台官网 - 开发者中心页中查看接口权限");
        errorList.put("48002", "粉丝拒收消息（粉丝在公众号选项中，关闭了 “ 接收消息 ” ）");
        errorList.put("48004", "api 接口被封禁，请登录 mp.weixin.qq.com 查看详情");
        errorList.put("48005", "api 禁止删除被自动回复和自定义菜单引用的素材");
        errorList.put("48006", "api 禁止清零调用次数，因为清零次数达到上限");
        errorList.put("48008", "没有该类型消息的发送权限");
        errorList.put("50001", "用户未授权该 api");
        errorList.put("50002", "用户受限，可能是违规后接口被封禁");
        errorList.put("50005", "用户未关注公众号");
        errorList.put("61451", "参数错误 (invalid parameter)");
        errorList.put("61452", "无效客服账号 (invalid kf_account)");
        errorList.put("61453", "客服帐号已存在 (kf_account exsited)");
        errorList.put("61454", "客服帐号名长度超过限制 ( 仅允许 10 个英文字符，不包括 @ 及 @ 后的公众号的微信号 )(invalid   kf_acount length)");
        errorList.put("61455", "客服帐号名包含非法字符 ( 仅允许英文 + 数字 )(illegal character in     kf_account)");
        errorList.put("61456", "客服帐号个数超过限制 (10 个客服账号 )(kf_account count exceeded)");
        errorList.put("61457", "无效头像文件类型 (invalid   file type)");
        errorList.put("61450", "系统错误 (system error)");
        errorList.put("61500", "日期格式错误");
        errorList.put("63001", "部分参数为空");
        errorList.put("63002", "无效的签名");
        errorList.put("65301", "不存在此 menuid 对应的个性化菜单");
        errorList.put("65302", "没有相应的用户");
        errorList.put("65303", "创建个性化菜单前，必须先创建默认菜单。");
        errorList.put("65304", "MatchRule 信息为空");
        errorList.put("65305", "个性化菜单数量受限");
        errorList.put("65306", "不支持个性化菜单的帐号");
        errorList.put("65307", "个性化菜单信息为空");
        errorList.put("65308", "包含没有响应类型的 button");
        errorList.put("65309", "个性化菜单开关处于关闭状态");
        errorList.put("65310", "填写了省份或城市信息，国家信息不能为空");
        errorList.put("65311", "填写了城市信息，省份信息不能为空");
        errorList.put("65312", "不合法的国家信息");
        errorList.put("65313", "不合法的省份信息");
        errorList.put("65314", "不合法的城市信息");
        errorList.put("65316", "个性化菜单最多只能跳转到3个域名下的链接。");
        errorList.put("65317", "不合法的 URL");
        errorList.put("87009", "无效的签名");
        errorList.put("9001001", "POST 数据参数不合法");
        errorList.put("9001002", "远端服务不可用");
        errorList.put("9001003", "Ticket 不合法");
        errorList.put("9001004", "获取摇周边用户信息失败");
        errorList.put("9001005", "获取商户信息失败");
        errorList.put("9001006", "获取 OpenID 失败");
        errorList.put("9001007", "上传文件缺失");
        errorList.put("9001008", "上传素材的文件类型不合法");
        errorList.put("9001009", "上传素材的文件尺寸不合法");
        errorList.put("9001010", "上传失败");
        errorList.put("9001020", "帐号不合法");
        errorList.put("9001021", "已有设备激活率低于 50% ，不能新增设备");
        errorList.put("9001022", "设备申请数不合法，必须为大于 0 的数字");
        errorList.put("9001023", "已存在审核中的设备 ID 申请");
        errorList.put("9001024", "一次查询设备 ID 数量不能超过 50");
        errorList.put("9001025", "设备 ID 不合法");
        errorList.put("9001026", "页面 ID 不合法");
        errorList.put("9001027", "页面参数不合法");
        errorList.put("9001028", "一次删除页面 ID 数量不能超过 10");
        errorList.put("9001029", "页面已应用在设备中，请先解除应用关系再删除");
        errorList.put("9001030", "一次查询页面 ID 数量不能超过 50");
        errorList.put("9001031", "时间区间不合法");
        errorList.put("9001032", "保存设备与页面的绑定关系参数错误");
        errorList.put("9001033", "门店 ID 不合法");
        errorList.put("9001034", "设备备注信息过长");
        errorList.put("9001035", "设备申请参数不合法");
        errorList.put("9001036", "查询起始值 begin 不合法");
    }

    public static String getWxErrorMsg(String code) {
        for (String key : errorList.keySet()) {
            if (key.equals(code)) {
                return errorList.get(key);
            }
        }
        return null;
    }
}
